Описание
Возвращает значение, показывающее количество уникальных значений
в объекте Index, являющемся частью присоединенной таблицы (только в
рабочей области Microsoft Jet).
Значение
Возвращаемое значение имеет тип Long.
Замечания
Свойство DistinctCount позволяет определить количество
уникальных значений, т.е. ключей, в индексе. Любой ключ подсчитывается только
один раз, несмотря на возможность наличия повторяющихся значений в индексе, не
являющемся уникальным. Данные сведения оказываются полезными в приложениях, в
которых делается попытка оптимизировать доступ к данным с помощью информации,
содержащейся в индексе. Число уникальных значений иногда называют мощностью или
кардинальным числом объекта Index.
Значение свойства
DistinctCount не всегда отражает реальное количество ключей, существующих
в конкретный момент времени. Например, изменения этого значения, вызванные
отменой транзакции, могут быть не сразу отражены в значении этого свойства.
Кроме того, свойство DistinctCount может не отражать результаты удаления
записей, содержащих уникальные ключи. Точное значение будет получено сразу после
применения метода CreateIndex.
Пример
Следующая программа использует свойство DistinctCount для
демонстрации определения числа уникальных значений в объекте Index.
Однако данное значение является точным только сразу после создания объекта
Index. Это значение останется точным, пока не будут изменены ключи,
добавлены новые или удалены старые ключи. (При повторном выполнении данной
процедуры пользователь имеет возможность увидеть результаты изменения значения
свойства DistinctCount для существующих объектов Index).
Sub DistinctCountX()
Dim dbsNorthwind As Database
Dim tdfEmployees As TableDef
Dim idxCountry As Index
Dim idxLoop As Index
Dim rstEmployees As Recordset
Set dbsNorthwind = OpenDatabase("Борей.mdb")
Set tdfEmployees = dbsNorthwind!Сотрудники
With tdfEmployees
' Создает и добавляет новый объект Index
' в таблицу "Сотрудники".
Set idxCountry = .CreateIndex("ИндексСтрана")
idxCountry.Fields.Append idxCountry.CreateField("Страна")
.Indexes.Append idxCountry
' Чтобы новое значение свойства DistinctCount стало
' доступным, необходимо обновить семейство.
.Indexes.Refresh
' Отображает семейство Indexes, чтобы показать
' текущие значения свойства DistinctCount.
Debug.Print "Семейство Indexes до добавления записи"
For Each idxLoop In .Indexes
Debug.Print " DistinctCount = " & _
idxLoop.DistinctCount & ", Name = " & idxLoop.Name
Next idxLoop
Set rstEmployees = dbsNorthwind.OpenRecordset("Сотрудники")
' Добавляет новую запись в таблицу "Сотрудники".
With rstEmployees
.AddNew
!Имя = "Петр"
!Фамилия = "Петров"
!Страна = "Чад"
.Update
End With
' Отображает семейство Indexes, чтобы показать
' измененные значения свойства DistinctCount.
Debug.Print "Семейство Indexes после добавления записи " & "и обновления семейства"
.Indexes.Refresh
For Each idxLoop In .Indexes
Debug.Print " DistinctCount = " & _
idxLoop.DistinctCount & ", Имя = " & idxLoop.Name
Next idxLoop
' Удаляет новую запись, созданную только для демонстрации.
With rstEmployees
.Bookmark = .LastModified
.Delete
.Close
End With
' Удаляет новое семейство Indexes, созданное для демонстрации.
.Indexes.Delete idxCountry.Name
End With
dbsNorthwind.Close
End Sub